package com.bblocks.dbmonitor.handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import top.javatool.canal.client.context.CanalContext;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * <p>Project: bblocks-pro - RecordChangedBase</p>
 * <p>描述：数据变更业务处理接口
 * 请需要的业务实现此接口
 * 返回true-继续执行后续逻辑
 * </p>
 *
 * @Author Zhao [125043150@qq.com]
 * @Date 2024/1/16 9:14
 * @Version 1.0
 * @since 8
 */
public interface RecordChangedBase {
    static Logger log = LoggerFactory.getLogger(RecordChangedBase.class);

    /**
     * 新增成功
     * @param map
     * @return true=继续执行后续执行器
     */
    public default boolean saved(Map<String, String> map) {
        if(log.isDebugEnabled())
            log.debug("增加 {}", map);
        return true;
    }

    /**
     * 修改成功
     * @param before
     * @param after
     * @return true=继续执行后续执行器
     */
    public default boolean updated(Map<String, String> before, Map<String, String> after) {
        if(log.isDebugEnabled()) {
            log.debug("修改 before {}", before);
            log.debug("修改 after {}", after);
        }
        return true;
    }

    /**
     * 同 updated ，仅当能提取到id时候触发(updated之后执行)
     * @param id
     */
    public default void updatedId(String id) {
        if(log.isDebugEnabled()) {
            log.debug("修改了  {}", id);
        }
    }

    /**
     * 删除成功
     * @param map
     * @return true=继续执行后续执行器
     */
    public default boolean deleted(Map<String, String> map) {
        if(log.isDebugEnabled())
            log.debug("删除 {}", map);
        return true;
    }

    /**
     * 同 deleted ，仅当能提取到id时候触发（deleted之后执行）
     * @param id
     */
    public default void deletedId(String id) {
        if(log.isDebugEnabled()) {
            log.debug("修改了  {}", id);
        }
    }
}
